package com.question.utils;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class IntegerTools {

	/**
	 * 获取n个在min到max之间的int型数据
	 * 
	 * @param n: 要获取数据的个数
	 * @param min:可以获取数据的最小值ֵ
	 * @param max: 可以获取数据的最大值ֵ
	 * @return
	 */
	public static int[]  getDifferentNum(int n, int min, int max){
		Set<Integer> set = new TreeSet<Integer>();
		while(set.size()<n){
			set.add((int)(min+Math.random()*(max-min)));
		}
		int[] in = setToInt(set);
		return in;
	}
	
	/**
	 * 将两个int型数组连接起来并返回
	 * 
	 * @param arr_1 要拼接的数组，数据元素在前的数组
	 * @param arr_2 要拼接的数组，数据元素在后的数组
	 * @return ：返回两个数组拼接后的数组
	 */
	public static int[] connectIntArr(int[] arr_1,int[] arr_2){
		int[] arr_3 = new int[arr_1.length+arr_2.length];
		for(int i=0;i<arr_1.length;i++)
			arr_3[i]=arr_1[i];
		for(int i=arr_1.length;i<arr_2.length+arr_1.length;i++)
			arr_3[i]=arr_2[i-arr_1.length];
		return arr_3;
	}
	
	/**
	 * 将int型数组转化为String（用于返回给页面的特殊形式）
	 * 
	 * @param arr
	 * @return
	 */
	public static String intArrToString(int[] arr){
		StringBuffer strBuf = new StringBuffer();
		for(int i=0;i<arr.length-1;i++)
			strBuf.append(arr[i]+".");
		strBuf.append(arr[arr.length-1]);
		return strBuf.toString();
	}
	
	/**
	 * 将set集合转化为int型数组
	 * 
	 * @param set
	 * @return
	 */
	private static int[] setToInt(Set<Integer> set) {
		Integer[] temp = set.toArray(new Integer[] {});
	
		int[] intArray = new int[temp.length];
		for (int i = 0; i < temp.length; i++) {
			intArray[i] = temp[i].intValue();
		}
		return intArray;
	}

	public static void main(String[] args){
		int[] t = getDifferentNum(3,1,44);
		int[] s = new int[]{1,2,3,4};
		int[] d = connectIntArr(t, s);
		for(int i=0;i<d.length;i++){
			System.out.println(d[i]);
		}
	}
}
